[アップデート] Amazon RDSがAWS Secrets Managerとの統合をサポートするようになりました
はじめに
こんにちは。大阪オフィスの林です。
Amazon RDSがAWS Secrets Managerとの統合をサポートするようになり、RDS作成時にRDS側でマスターユーザーとマスターユーザーパスワードをSecrets Managerに登録してくれるようになりました。
これまでRDSのパスワード管理に独自のSecrets ManagerやLambdaを利用しているケースがありましたが、個別の実装が不要になる且つマネージメントコンソールからポチポチで実装できるという嬉しみがあります。
やってみた
データベースエンジンは何でもよいのですが、今回の検証ではRDS for MySQLを指定します。
「認証情報の設定」に「Manage master credentials in AWS Secrets Manager」という項目が増えているのでチェックを入れておきます。
その他の設定は今回の検証に関係ないのでデフォルトとしてRDSを作成していきます。
RDS作成後、Secrets Managerを覗いてみるとシークレットが作成されていました。
マスターユーザーとパスワードがシークレットのキーとして登録されています。
デフォルトだと「7日」のローテーションが設定されていました。
それではいちおう接続確認だけしておきたいと思います。
# Secrets Managerからシークレットの値を変数に入れます。 $ user=$(aws secretsmanager get-secret-value --secret-id rds\!db-xxxxxx-xxxx-xxxx-xxxx-xxxxx | jq .SecretString | jq fromjson | jq -r .username) $ password=$(aws secretsmanager get-secret-value --secret-id rds\!db-xxxxxx-xxxx-xxxx-xxxx-xxxxx | jq .SecretString | jq fromjson | jq -r .password) # MySQLのエンドポイントに接続します。 $ mysql -h database-1.xxxxx.ap-northeast-1.rds.amazonaws.com -u $user -P 3306 -p$password Welcome to the MariaDB monitor. Commands end with ; or \g. Your MySQL connection id is 23 Server version: 8.0.28 Source distribution Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MySQL [(none)]>
Secrets Managerのシークレットを取得してRDSのエンドポイントに接続できました!
RDSを削除すると一緒にSecrets Managerのシークレットも消えてくれるので不要なリソースや設定が残り続けないというのもうれしいポイントですね。
まとめ
これまで個別実装が必要だったRDSのマスターユーザーとパスワードの管理が非常に簡単に実装できるようになりました。
この記事がどなたかの参考になりましたら幸いです。
以上、大阪オフィスの林がお送りしました!